# -*- coding: utf-8 -*-
from SimpleXMLRPCServer import SimpleXMLRPCServer
from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler
import pickle  
from BaseDonnees import *
from InterfaceBaseDonnees import *

import os
os.environ['PATH'] ="C:/Oracle/Client/bin" + os.pathsep +os.environ['PATH']

import sys
cmdline=sys.argv[0]
cmdline=cmdline[:11]
os.environ['PATH'] = cmdline + os.pathsep +os.environ['PATH']


" Classe contenneur pour toutes les vues "
class ContenneurVue(object):
    LISTEVUES=['vue','gTables','gprofiles','production','.....']
    VueAdmin=[0,1,2,3,4,5,6,7,8,9,'...']
    VueProduction=[2,4,6,'...']

    "...."
    def __init__(self):
        self.rows=[]
        pass
    
    " On charge tout les vues et on les envoie en une seule transmission"
    def ChargerVues(self,profile):
        self.listeVues=[]
        if (profile.upper()=='ADMIN'):            
            for index in VueAdmin:
                vue=ConteneurVue.LISTEVUES[index]
                if (index==1):
                    vue='admin/'+vue
                f=open(vue+'.py',r)
                vueStr=f.readlines()
                self.listeVues.append(vueStr)
                f.close() 
                pass
        elif (profile.upper()=='PRODUCTION'):            
            for index in VueProduction:
                vue=ConteneurVue.LISTEVUES[index]
                vue=ConteneurVue.LISTEVUES[index]
                if (index==1):
                    vue='production/'+vue
                f=open(vue+'.py',r)
                vueStr=f.readlines()
                self.listeVues.append(vueStr)
                f.close() 
                pass
        
        elif (profile.upper()=='TEST'):
            f=open('test/vue.py','rb')
            vueStr=f.readlines()
            self.listeVues.append(vueStr)
            f.close() 
        "..."
        return self.listeVues
        pass

" Pour le moment on va se contenter de cette classe"
class ChargeurVue(object):
    def __init__(self):        
        pass

    def envoyerVue(self,profile):
        if (profile.upper()=='TEST'):                       
            f=open('test/vue.py','r')
            p=f.readlines()
            f.close()
            return p
        elif (profile.upper()=='ADMIN'):                                  
            f=open('admin/vue.py','r')
            p=f.readlines()
            f.close()
            return p
        elif ((profile.upper()=='USER') or (profile=='') ):                                  
            f=open('user/vue.py','r')
            p=f.readlines()
            f.close()
            return p
        pass

    
class Server(object):
    def __init__(self):
        self.server= SimpleXMLRPCServer(("localhost", 8000),allow_none=True,\
                                            requestHandler=SimpleXMLRPCRequestHandler)
        self.server.register_introspection_functions()
        self.BaseDonnees = BaseDonnees()
        Message = self.BaseDonnees.DemarrerConnection("b52equip1", "var2", "titan")
        print Message[1]
        self.InterfaceBaseDonnees = InterfaceBaseDonnees("Serveur", self.BaseDonnees)
        self.register(self.InterfaceBaseDonnees)
        pass
    
    def register(self,cls):
        self. server.register_instance(cls)
        pass
    
    def run(self):
        print 'OK, serveur demarre'
        self.server.serve_forever()
        pass


serveur=Server()
serveur.register(ChargeurVue())
serveur.run()       
